package com.alameda.commonpent.commonback.mapper;

import org.apache.ibatis.annotations.*;

import java.util.HashMap;

/**
 * 通用后端组件 持久层
 *
 * @author Lv
 * @date 2024/2/19
 */
@SuppressWarnings("all")
@Mapper
public interface CommonBackMapper<T> {
    /**
     * 获取详情
     *
     * @param selectFiled 查询字段
     * @param tableName   表名称
     * @param where       条件
     * @return
     */
    @Select("select ${selectFiled} from ${tableName} where 1 = 1 ${where} ")
    @ResultType(HashMap.class)
    HashMap get(@Param("selectFiled") String selectFiled, @Param("tableName") String tableName, @Param("where") String where);

    /**
     * 批量删除
     *
     * @param tableName 表名称
     * @param where     条件
     * @return
     */
    @Update("update ${tableName} set delete_flag = 1 where 1 = 1 ${where}")
    @ResultType(Integer.class)
    Integer remove(@Param("tableName") String tableName, @Param("where") String where);

    /**
     * 执行dml脚本
     *
     * @param sql dml
     * @return
     */
    @Update("${sqlDml}")
    @ResultType(Integer.class)
    Integer executeSqlDml(@Param("sqlDml") String sqlDml);

    /**
     * 物理删除
     *
     * @param deleteSql 删除sql
     * @return
     */
    @Delete("${deleteSql}")
    @ResultType(Integer.class)
    Integer executeDelete(@Param("deleteSql") String deleteSql);
}
